home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995 February: Tool Chest / Dev.CD Feb 95 / Dev.CD Feb 95.toast / New System Software Extensions / ASLM SDK v1.1.2 / ASLM Examples / TestTools / Sources / TestExceptions.cp < prev    next >
Encoding:
Text File  |  1994-11-21  |  3.0 KB  |  138 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        TestExceptions.cp
  3.  
  4.     Contains:    Implementation of class TTestExceptions
  5.  
  6.     Copyright:    © 1992-1993 by Apple Computer, Inc., all rights reserved.
  7.  
  8. */
  9.  
  10. #ifndef __TESTEXCEPTIONS__
  11. #include "TestExceptions.h"
  12. #endif
  13.  
  14. /*******************************************************************************
  15. ** External Function
  16. ********************************************************************************/
  17.  
  18. extern void ThrowException(long);
  19.  
  20. /*******************************************************************************
  21. ** TTestExceptions routine
  22. ********************************************************************************/
  23.  
  24. TTestExceptions::TTestExceptions()
  25. {}
  26.  
  27. TTestExceptions::~TTestExceptions()
  28. {}
  29.  
  30. void TTestExceptions::InitTest(Boolean, Boolean, int, char**)
  31. {}
  32.  
  33. void TTestExceptions::EndTest(Boolean, Boolean)
  34. {}
  35.  
  36. void TTestExceptions::RunTestIteration(Boolean verbose, Boolean debug)
  37. {
  38.     DebugTest(debug, "About to Test Exceptions");
  39.     if (verbose)
  40.         Printf("# INFO: Testing CATCH\n");
  41.         
  42.     TRY
  43.         ThrowException(-10);
  44.     CATCH(-10)
  45.         if (verbose)
  46.             Printf("# INFO: Caught the Exception!\n");
  47.     CATCH_ALL
  48.         Printf("# ERROR: Exception caught in CATCH_ALL - #%d\n", ErrorCode());
  49.     ENDTRY
  50.  
  51.     if (verbose)
  52.         Printf("# INFO: Testing multiple CATCHs\n");
  53.         
  54.     TRY
  55.         ThrowException(-20);
  56.     CATCH(-10)
  57.         Printf("# ERROR: Exception caught in CATCH(-10) - #%d\n", ErrorCode());
  58.     CATCH(-20)
  59.         if (verbose)
  60.             Printf("# INFO: Caught the Exception!\n");
  61.     CATCH(-30)
  62.         Printf("# ERROR: Exception caught in CATCH(-30) - #%d\n", ErrorCode());
  63.     CATCH_ALL
  64.         Printf("# ERROR: Exception caught in CATCH_ALL - #%d\n", ErrorCode());
  65.     ENDTRY
  66.  
  67.     if (verbose)
  68.         Printf("# INFO: Testing CATCH_ALL\n");
  69.         
  70.     TRY
  71.         ThrowException(-21);
  72.     CATCH(-10)
  73.         Printf("# ERROR: Exception caught in CATCH(-10) - #%d\n", ErrorCode());
  74.     CATCH(-20)
  75.         Printf("# ERROR: Exception caught in CATCH(-20) - #%d\n", ErrorCode());
  76.     CATCH(-30)
  77.         Printf("# ERROR: Exception caught in CATCH(-30) - #%d\n", ErrorCode());
  78.     CATCH_ALL
  79.         if (ErrorCode() == -21)
  80.         {
  81.             if (verbose)
  82.                 Printf("# INFO: Exception caugh in CATCH_ALL\n");
  83.         }
  84.         else
  85.             Printf("# ERROR: Exception caught in CATCH_ALL - #%d\n", ErrorCode());
  86.     ENDTRY
  87.  
  88.     if (verbose)
  89.         Printf("# INFO: Testing FINALLY WITH EXCEPTION\n");
  90.         
  91.     Boolean flag = false;
  92.     Volatile(flag);
  93.  
  94.     TRY
  95.         Boolean flag = false;
  96.         Volatile(flag);
  97.         TRY
  98.             RAISE(-10);
  99.         FINALLY
  100.             flag = true;
  101.             if (verbose)
  102.                 Printf("# INFO: Reached FINALLY code\n");
  103.         ENDTRY
  104.         if (!flag)
  105.             Printf("# ERROR: Never reached FINALLY code\n");
  106.     CATCH_ALL
  107.         flag = true;
  108.         if (verbose)
  109.             Printf("# INFO: Reached outer CATCH code\n");
  110.     ENDTRY
  111.     
  112.     if (!flag)
  113.         Printf("# ERROR: FINALLY section did not rethrow exception\n");
  114.     
  115.     
  116.  
  117.     if (verbose)
  118.         Printf("# INFO: Testing FINALLY WITHOUT EXCEPTION\n");
  119.         
  120.     TRY
  121.         Boolean flag = false;
  122.         Volatile(flag);
  123.         TRY
  124.             // nothing to do here
  125.         FINALLY
  126.             flag = true;
  127.             if (verbose)
  128.                 Printf("# INFO: Reached FINALLY code\n");
  129.         ENDTRY
  130.         if (!flag)
  131.             Printf("# ERROR: Never reached FINALLY code\n");
  132.     CATCH_ALL
  133.         if (verbose)
  134.             Printf("# ERROR: FINALLY section rethrew exception\n");
  135.     ENDTRY
  136.     
  137. }
  138.